import {createRouter, createWebHistory} from 'vue-router'
import HomeView from "@/views/admin/HomeView.vue";
import IndexView from "@/views/admin/IndexView.vue";
import AdminView from "@/views/admin/AdminView.vue";
import CategoryView from "@/views/admin/CategoryView.vue";
import GoodsView from "@/views/admin/GoodsView.vue";
import OrderView from "@/views/admin/OrderView.vue";
import UserView from "@/views/admin/UserView.vue";
import LoginView from "@/views/admin/LoginView.vue";
import {useTokenStore} from "@/stores/token.js";
import UserLoginView from "@/views/user/LoginView.vue"
import UserHomeView from "@/views/user/HomeView.vue"
import UserIndexView from "@/views/user/IndexView.vue"
import SearchView from "@/views/user/SearchView.vue";
import RegView from "@/views/user/RegView.vue";
import UserGoods from "@/views/user/GoodsView.vue"
import CartView from "@/views/user/CartView.vue";
import SearchAllView from "@/views/user/SearchAllView.vue";
import CreateOrderView from "@/views/user/CreateOrderView.vue";
import CenterView from "@/views/user/CenterView.vue";
import AddrListView from "@/views/user/center/AddrListView.vue";
import CollectListView from "@/views/user/center/CollectListView.vue";
import InfoView from "@/views/user/center/InfoView.vue";
import OrderListView from "@/views/user/center/OrderListView.vue";
import PasswordView from "@/views/user/center/PasswordView.vue";
import RechargeView from "@/views/user/center/RechargeView.vue";
import PayView from "@/views/user/PayView.vue";

const router = createRouter({
    history: createWebHistory(import.meta.env.BASE_URL),
    routes: [
        {
            path:'/',
            name:'user_home',
            redirect:'/user/index',
            component:UserHomeView,
            children:[
                {
                    path:'/user/login',
                    name:'user_login',
                    component:UserLoginView
                }, {
                    path:'/user/index',
                    name:'user_index',
                    component:UserIndexView
                }, {
                    path:'/user/search/:categoryId?',
                    name:'user_search',
                    props:true,
                    component:SearchView
                },{
                    path:'/user/reg',
                    name:'user_reg',
                    component:RegView
                },{
                    path:'/user/goods',
                    name:'user_goods',
                    component:UserGoods
                },{
                    path:'/user/cart',
                    name:'user_cart',
                    component:CartView
                },{
                    path:'/user/searchAll',
                    name:'user_searchAll',
                    component:SearchAllView
                },{
                    path:'/user/pay',
                    name:'user_pay',
                    component:PayView
                },{
                    path:'/user/createOrder',
                    name:'user_createOrder',
                    component:CreateOrderView
                },{
                    path:'/user/center',
                    name:'user_center',
                    component:CenterView,
                    redirect:'/user/Info',
                    children : [
                        {
                            path:'/user/addrList',
                            name:'user_addrList',
                            component:AddrListView,
                        },  {
                            path:'/user/collectList',
                            name:'user_collectList',
                            component:CollectListView,
                        }, {
                            path:'/user/Info',
                            name:'user_Info',
                            component:InfoView,
                        }, {
                            path:'/user/orderList',
                            name:'user_orderList',
                            component:OrderListView,
                        }, {
                            path:'/user/password',
                            name:'user_password',
                            component:PasswordView,
                        }, {
                            path:'/user/recharge',
                            name:'user_recharge',
                            component:RechargeView,
                        }
                    ]
                }
            ]
        },{
            path:'/admin/login',
            name:'admin_login',
            component:LoginView
        }, {
            path: '/admin/home',
            name: 'admin_home',
            component: HomeView,
            redirect:'/admin/index',
            children: [
                {
                    path: '/admin/index',
                    name: 'admin_index',
                    component: IndexView
                }, {
                    path: '/admin/admin',
                    name: 'admin_admin',
                    component: AdminView
                }, {
                    path: '/admin/category',
                    name: 'admin_category',
                    component: CategoryView
                }, {
                    path: '/admin/goods',
                    name: 'admin_goods',
                    component: GoodsView
                }, {
                    path: '/admin/order',
                    name: 'admin_order',
                    component: OrderView
                }, {
                    path: '/admin/user',
                    name: 'admin_user',
                    component: UserView
                },
            ]
        }
    ]
})

/*
导航首位
判断页面跳转是否合法
判断是否已经登录
 */
router.beforeEach((to,from) => {
    //to要访问的位置
    //from起始位置
    if(to.path == '/admin/login' || to.path == '/admin/login' || to.path == '/user/login' || to.path == "/user/index" || to.path == "/user/goods" || to.path == "/user/reg" || to.path.startsWith("/user/search") ){
        return true;
    }else{
        const tokenStore = useTokenStore();
        if(tokenStore.tokenStr){
            return true;
        }else{
            //判断跳转到管理员登录还是用户登录
            if(to.path.startsWith("/admin")){
                return "/admin/login";
            }else if(to.path.startsWith("/user")){
                return "/user/login";
            }
        }
    }
})

export default router
